/**
 * 
 */
package fr.gfi.agraf.persistence.dao;

import java.util.Date;
import java.util.List;
import java.util.Map;

import fr.gfi.agraf.persistence.entity.Tache;

/**
 * @author Zakaria
 * 
 */
/**
 * @author Zakaria
 * 
 */
public interface ITacheDAO extends IAbstractGenericDAO<Tache> {

	/**
	 * Récupere une tache active (end_date==null) d'un utilisateur
	 * 
	 * @param idUtilisateur
	 * @return
	 */
	List<Tache> getTachesActiveByUtilisateurId(final Long idUtilisateur);

	/**
	 * Récupere toute les taches Utilisateur peut être null
	 * 
	 * @param idActivite
	 * @param idUtilisateur
	 * @return
	 */
	List<Tache> getTachesByActiviteAndUtilisateur(final Long idActivite, final Long idUtilisateur, final Date date);

	/**
	 * Récupere toute les taches avec saisies d'un utilisateur pour une date de
	 * saisie
	 * 
	 * @param idUtilisateur
	 * @param date
	 * @return
	 */
	List<Tache> getTachesBySaisieDateAndUtilisateur(final Long idUtilisateur, final Date date);

	/**
	 * Récupere toute les taches et retourne Map
	 * 
	 * @param idTacheList
	 * @return
	 */
	Map<Long, Tache> getTachesMapByIds(final List<Long> idTacheList);

	/**
	 * Récupére toutes les taches terminées liées a un utilisateur
	 * 
	 * @param idUtilisateur
	 * @return
	 */
	List<Tache> getListeTacheTermineeByUtilisateur(final Long idUtilisateur);
}
